home *** CD-ROM | disk | FTP | other *** search
/ ETO Development Tools 1 / ETO Development Tools 1.iso / Essentials / Developer Essentials Jul 90 / Programming / MPW Interfaces & Libraries 3.1 / PInterfaces / TextEdit.p < prev    next >
Encoding:
Text File  |  1989-10-13  |  7.5 KB  |  273 lines  |  [TEXT/MPS ]

  1. {
  2. Created: Tuesday, September 12, 1989 at 5:40 PM
  3.     TextEdit.p
  4.     Pascal Interface to the Macintosh Libraries
  5.  
  6.     Copyright Apple Computer, Inc.    1985-1989
  7.     All rights reserved
  8. }
  9.  
  10.  
  11. {$IFC UNDEFINED UsingIncludes}
  12. {$SETC UsingIncludes := 0}
  13. {$ENDC}
  14.  
  15. {$IFC NOT UsingIncludes}
  16.     UNIT TextEdit;
  17.     INTERFACE
  18. {$ENDC}
  19.  
  20. {$IFC UNDEFINED UsingTextEdit}
  21. {$SETC UsingTextEdit := 1}
  22.  
  23. {$I+}
  24. {$SETC TextEditIncludes := UsingIncludes}
  25. {$SETC UsingIncludes := 1}
  26. {$IFC UNDEFINED UsingQuickdraw}
  27. {$I $$Shell(PInterfaces)Quickdraw.p}
  28. {$ENDC}
  29. {$SETC UsingIncludes := TextEditIncludes}
  30.  
  31. CONST
  32. teJustLeft = 0;
  33. teJustCenter = 1;
  34. teJustRight = -1;
  35. teForceLeft = -2;
  36. doFont = 1;                             { set font (family) number}
  37. doFace = 2;                             {set character style}
  38. doSize = 4;                             {set type size}
  39. doColor = 8;                            {set color}
  40. doAll = 15;                             {set all attributes}
  41. addSize = 16;                            {adjust type size}
  42. doToggle = 32;                            {toggle mode for TESetStyle & TEContinuousStyle}
  43. intEOLHook = 0;                         {TEIntHook value}
  44. intDrawHook = 1;                        {TEIntHook value}
  45. intWidthHook = 2;                        {TEIntHook value}
  46. intHitTestHook = 3;                     {TEIntHook value}
  47.  
  48.  
  49. TYPE
  50.  
  51.  
  52. TEPtr = ^TERec;
  53. TEHandle = ^TEPtr;
  54. TERec = RECORD
  55.     destRect: Rect;
  56.     viewRect: Rect;
  57.     selRect: Rect;
  58.     lineHeight: INTEGER;
  59.     fontAscent: INTEGER;
  60.     selPoint: Point;
  61.     selStart: INTEGER;
  62.     selEnd: INTEGER;
  63.     active: INTEGER;
  64.     wordBreak: ProcPtr;
  65.     clikLoop: ProcPtr;
  66.     clickTime: LONGINT;
  67.     clickLoc: INTEGER;
  68.     caretTime: LONGINT;
  69.     caretState: INTEGER;
  70.     just: INTEGER;
  71.     teLength: INTEGER;
  72.     hText: Handle;
  73.     recalBack: INTEGER;
  74.     recalLines: INTEGER;
  75.     clikStuff: INTEGER;
  76.     crOnly: INTEGER;
  77.     txFont: INTEGER;
  78.     txFace: Style;                        {txFace is unpacked byte}
  79.     txMode: INTEGER;
  80.     txSize: INTEGER;
  81.     inPort: GrafPtr;
  82.     highHook: ProcPtr;
  83.     caretHook: ProcPtr;
  84.     nLines: INTEGER;
  85.     lineStarts: ARRAY [0..16000] OF INTEGER;
  86.     END;
  87.  
  88. CharsPtr = ^Chars;
  89. CharsHandle = ^CharsPtr;
  90.  
  91. Chars = PACKED ARRAY [0..32000] OF CHAR;
  92.  
  93. StyleRun = RECORD
  94.     startChar: INTEGER;                 {starting character position}
  95.     styleIndex: INTEGER;                {index in style table}
  96.     END;
  97.  
  98. STElement = RECORD
  99.     stCount: INTEGER;                    {number of runs in this style}
  100.     stHeight: INTEGER;                    {line height}
  101.     stAscent: INTEGER;                    {font ascent}
  102.     stFont: INTEGER;                    {font (family) number}
  103.     stFace: Style;                        {character Style}
  104.     stSize: INTEGER;                    {size in points}
  105.     stColor: RGBColor;                    {absolute (RGB) color}
  106.     END;
  107.  
  108. STPtr = ^TEStyleTable;
  109. STHandle = ^STPtr;
  110.  
  111. TEStyleTable = ARRAY [0..1776] OF STElement;
  112.  
  113. LHElement = RECORD
  114.     lhHeight: INTEGER;                    {maximum height in line}
  115.     lhAscent: INTEGER;                    {maximum ascent in line}
  116.     END;
  117.  
  118. LHPtr = ^LHTable;
  119. LHHandle = ^LHPtr;
  120.  
  121. LHTable = ARRAY [0..8000] OF LHElement;
  122.  
  123. ScrpSTElement = RECORD
  124.     scrpStartChar: LONGINT;             {offset to start of style}
  125.     scrpHeight: INTEGER;                {line height}
  126.     scrpAscent: INTEGER;                {font ascent}
  127.     scrpFont: INTEGER;                    {font (family) number}
  128.     scrpFace: Style;                    {character style}
  129.     scrpSize: INTEGER;                    {size in points}
  130.     scrpColor: RGBColor;                {absolute (RGB) color}
  131.     END;
  132.  
  133. ScrpSTTable = ARRAY[0..1600] OF ScrpSTElement;
  134.  
  135. StScrpPtr = ^StScrpRec;
  136. StScrpHandle = ^StScrpPtr;
  137. StScrpRec = RECORD
  138.     scrpNStyles: INTEGER;                {number of styles in scrap}
  139.     scrpStyleTab: ScrpSTTable;            {table of styles for scrap}
  140.     END;
  141.  
  142. NullStPtr = ^NullStRec;
  143. NullStHandle = ^NullStPtr;
  144. NullStRec = RECORD
  145.     teReserved: LONGINT;                {reserved for future expansion}
  146.     nullScrap: StScrpHandle;            {handle to scrap style table}
  147.     END;
  148.  
  149. TEStylePtr = ^TEStyleRec;
  150. TEStyleHandle = ^TEStylePtr;
  151. TEStyleRec = RECORD
  152.     nRuns: INTEGER;                     {number of style runs}
  153.     nStyles: INTEGER;                    {size of style table}
  154.     styleTab: STHandle;                 {handle to style table}
  155.     lhTab: LHHandle;                    {handle to line-height table}
  156.     teRefCon: LONGINT;                    {reserved for application use}
  157.     nullStyle: NullStHandle;            {Handle to style set at null selection}
  158.     runs: ARRAY [0..8000] OF StyleRun;    {ARRAY [0..8000] OF StyleRun}
  159.     END;
  160.  
  161. TextStylePtr = ^TextStyle;
  162. TextStyleHandle = ^TextStylePtr;
  163. TextStyle = RECORD
  164.     tsFont: INTEGER;                    {font (family) number}
  165.     tsFace: Style;                        {character Style}
  166.     tsSize: INTEGER;                    {size in point}
  167.     tsColor: RGBColor;                    {absolute (RGB) color}
  168.     END;
  169.  
  170. TEIntHook = INTEGER;
  171.  
  172.  
  173.  
  174. PROCEDURE TEInit;
  175.     INLINE $A9CC;
  176. FUNCTION TENew(destRect: Rect;viewRect: Rect): TEHandle;
  177.     INLINE $A9D2;
  178. PROCEDURE TEDispose(hTE: TEHandle);
  179.     INLINE $A9CD;
  180. PROCEDURE TESetText(text: Ptr;length: LONGINT;hTE: TEHandle);
  181.     INLINE $A9CF;
  182. FUNCTION TEGetText(hTE: TEHandle): CharsHandle;
  183.     INLINE $A9CB;
  184. PROCEDURE TEIdle(hTE: TEHandle);
  185.     INLINE $A9DA;
  186. PROCEDURE TESetSelect(selStart: LONGINT;selEnd: LONGINT;hTE: TEHandle);
  187.     INLINE $A9D1;
  188. PROCEDURE TEActivate(hTE: TEHandle);
  189.     INLINE $A9D8;
  190. PROCEDURE TEDeactivate(hTE: TEHandle);
  191.     INLINE $A9D9;
  192. PROCEDURE TEKey(key: CHAR;hTE: TEHandle);
  193.     INLINE $A9DC;
  194. PROCEDURE TECut(hTE: TEHandle);
  195.     INLINE $A9D6;
  196. PROCEDURE TECopy(hTE: TEHandle);
  197.     INLINE $A9D5;
  198. PROCEDURE TEPaste(hTE: TEHandle);
  199.     INLINE $A9DB;
  200. PROCEDURE TEDelete(hTE: TEHandle);
  201.     INLINE $A9D7;
  202. PROCEDURE TEInsert(text: Ptr;length: LONGINT;hTE: TEHandle);
  203.     INLINE $A9DE;
  204. PROCEDURE TESetJust(just: INTEGER;hTE: TEHandle);
  205.     INLINE $A9DF;
  206. PROCEDURE TEUpdate(rUpdate: Rect;hTE: TEHandle);
  207.     INLINE $A9D3;
  208. PROCEDURE TextBox(text: Ptr;length: LONGINT;box: Rect;just: INTEGER);
  209.     INLINE $A9CE;
  210. PROCEDURE TEScroll(dh: INTEGER;dv: INTEGER;hTE: TEHandle);
  211.     INLINE $A9DD;
  212. PROCEDURE TESelView(hTE: TEHandle);
  213.     INLINE $A811;
  214. PROCEDURE TEPinScroll(dh: INTEGER;dv: INTEGER;hTE: TEHandle);
  215.     INLINE $A812;
  216. PROCEDURE TEAutoView(fAuto: BOOLEAN;hTE: TEHandle);
  217.     INLINE $A813;
  218. FUNCTION TEScrapHandle: Handle;
  219.     INLINE $2EB8,$0AB4;
  220. PROCEDURE TECalText(hTE: TEHandle);
  221.     INLINE $A9D0;
  222. FUNCTION TEGetOffset(pt: Point;hTE: TEHandle): INTEGER;
  223.     INLINE $A83C;
  224. FUNCTION TEGetPoint(offset: INTEGER;hTE: TEHandle): Point;
  225.     INLINE $3F3C,$0008,$A83D;
  226. PROCEDURE TEClick(pt: Point;fExtend: BOOLEAN;h: TEHandle);
  227.     INLINE $A9D4;
  228. FUNCTION TEStylNew(destRect: Rect;viewRect: Rect): TEHandle;
  229.     INLINE $A83E;
  230. PROCEDURE SetStylHandle(theHandle: TEStyleHandle;hTE: TEHandle);
  231.     INLINE $3F3C,$0005,$A83D;
  232. FUNCTION GetStylHandle(hTE: TEHandle): TEStyleHandle;
  233.     INLINE $3F3C,$0004,$A83D;
  234. PROCEDURE TEGetStyle(offset: INTEGER;VAR theStyle: TextStyle;VAR lineHeight: INTEGER;
  235.     VAR fontAscent: INTEGER;hTE: TEHandle);
  236.     INLINE $3F3C,$0003,$A83D;
  237. PROCEDURE TEStylPaste(hTE: TEHandle);
  238.     INLINE $3F3C,$0000,$A83D;
  239. PROCEDURE TESetStyle(mode: INTEGER;newStyle: TextStyle;redraw: BOOLEAN;
  240.     hTE: TEHandle);
  241.     INLINE $3F3C,$0001,$A83D;
  242. PROCEDURE TEReplaceStyle(mode: INTEGER;oldStyle: TextStyle;newStyle: TextStyle;
  243.     redraw: BOOLEAN;hTE: TEHandle);
  244.     INLINE $3F3C,$0002,$A83D;
  245. FUNCTION GetStylScrap(hTE: TEHandle): StScrpHandle;
  246.     INLINE $3F3C,$0006,$A83D;
  247. PROCEDURE TEStylInsert(text: Ptr;length: LONGINT;hST: StScrpHandle;hTE: TEHandle);
  248.     INLINE $3F3C,$0007,$A83D;
  249. FUNCTION TEGetHeight(endLine: LONGINT;startLine: LONGINT;hTE: TEHandle): LONGINT;
  250.     INLINE $3F3C,$0009,$A83D;
  251. FUNCTION TEContinuousStyle(VAR mode: INTEGER;VAR aStyle: TextStyle;hTE: TEHandle): BOOLEAN;
  252.     INLINE $3F3C,$000A,$A83D;
  253. PROCEDURE SetStylScrap(rangeStart: LONGINT;rangeEnd: LONGINT;newStyles: StScrpHandle;
  254.     redraw: BOOLEAN;hTE: TEHandle);
  255.     INLINE $3F3C,$000B,$A83D;
  256. PROCEDURE TECustomHook(which: TEIntHook;VAR addr: ProcPtr;hTE: TEHandle);
  257.     INLINE $3F3C,$000C,$A83D;
  258. FUNCTION TENumStyles(rangeStart: LONGINT;rangeEnd: LONGINT;hTE: TEHandle): LONGINT;
  259.     INLINE $3F3C,$000D,$A83D;
  260. FUNCTION TEGetScrapLen: LONGINT;
  261. PROCEDURE TESetScrapLen(length: LONGINT);
  262. FUNCTION TEFromScrap: OSErr;
  263. FUNCTION TEToScrap: OSErr;
  264. PROCEDURE SetClikLoop(clikProc: ProcPtr;hTE: TEHandle);
  265. PROCEDURE SetWordBreak(wBrkProc: ProcPtr;hTE: TEHandle);
  266.  
  267. {$ENDC}    { UsingTextEdit }
  268.  
  269. {$IFC NOT UsingIncludes}
  270.     END.
  271. {$ENDC}
  272.  
  273.